package 数组算法;

import java.util.Arrays;

public class searchMatrix240 {
    /**
     * 两种方式来实现遍历
     * 从右上角开始
     * 从内一层开始用二分法来实现
     *
     * @param matrix
     * @param target
     * @return
     */
    public boolean searchMatrix(int[][] matrix, int target) {
        int len = matrix.length;
        int row = matrix[0].length;
        int x = 0, y = row - 1;
        while (x < len && y >= 0) {
            if (matrix[x][y] == target) {
                return true;
            }
            if (matrix[x][y] < target) {
                ++x;
            } else {
                --y;
            }
        }
        return false;
    }

    /**
     * 两种方式来实现遍历
     * 从右上角开始
     * 从内一层开始用二分法来实现
     *
     * @param matrix
     * @param target
     * @return
     */
    public boolean searchMatrixV2(int[][] matrix, int target) {
        int len = matrix.length;
        int row = matrix[0].length;
        if (len <= 0 || row <= 0) {
            return false;
        }
        for (int[] arr : matrix) {
            if (Arrays.binarySearch(arr, target) >= 0) {
                return true;
            }
        }
        return false;
    }
}
